package blbetter.training;

import blbetter.db.Spiel;
import blbetter.netze.BlBetterInputSit;
import blbetter.netze.BlBetterNet;

public class SimulatorOne extends Simulator {

	public SimulatorOne(BlBetterNet blBetterNet, double quote, double stake,
			double delta, int saisonId, int spieltag) {
		super(blBetterNet, saisonId, spieltag, stake, quote, delta);
	}

	protected void competeSpiel() {
		BlBetterInputSit is;
		Spiel spiel;
		do {
			spiel = db.getRandom(abSpieltag);
			is = blBetterNet.getInputSit(spiel, db);
		} while (is.hasError());

		double op = blBetterNet.run(is.getInput());

		// wenn ev stimmt 10 wetten
		double ev = (op * (quote - 1.)) - (1. - op);
		// einsatz aus ev berechnen
		double einsatz = 10.;
		// System.out.println("EV: " + ev + " Spiel: " + spiel);
		if (ev > delta) {
			gewinn -= einsatz;
			if (spiel.heimTore + spiel.gastTore < 4) {
				gewinn += einsatz * quote;
				won++;
			} else {
				lost++;
			}
		}

	}

	@Override
	public void statistik() {

	}

	@Override
	public void statistikAusgeben() {
		System.out.println("Simu[" + played + "]: " + gewinn);
		System.out.println("Betted: " + (won + lost) + " %:"
				+ ((won + lost) * 100) / played);
		System.out.println("Won: " + won + " Loss: " + lost);
		System.out.println("%Won: " + (won * 100) / (won + lost));
	}

}
